<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.forEach循环 
        // forEach  map  some  every  reduce ：函数式编程 思维  强调结果 ，做什么？过程抽象
        // for ： 强调过程 ，如何做 

        // 获取 循环的键值 键名 及 原本数组

        // var arr = ["张三","李四","王五"];
        // arr.forEach(function(item,key,arr){
        //     console.log(item,key,arr);
        // })

        // 函数的定义
        // function myForEach(arr,fn){
        //     for(var i=0;i<arr.length;i++){
        //         fn(arr[i],i,arr);
        //     }
        // }

        // Array.prototype.myForEach = function(fn){
        //     for(var i=0;i<this.length;i++){
        //         fn(this[i],i,this);
        //     }
        // }

        // arr.myForEach(function(item,key,arr){
        //     console.log(item,key,arr);
        // })
        // 函数的调用
        // myForEach(arr,function(item,key,arr){
        //     console.log(item,key,arr);
        // })



        // 2.map循环  映射 
        var arr = ["张三", "李四", "王五"];
        // var res = arr.map(function (item, key, arr) {
        //     return item;
        // })

            function mymap(arr,fn){
                var result = [];
                for(var i=0;i<arr.length;i++){
                   var res =  fn(arr[i],i,arr);
                   result.push(res);
                }
                return result;
            }


          var res =  mymap(arr,function(item,key,arr){
                console.log(item,key,arr);
                return item;
            })

        console.log(res);

    </script>
</body>
